Adding some more judges, here and there.
[and.git] / UVa / 10137 - The Trip / p10137.pas
blob6cbde2f692e97d6e2dcef1a56305a21a208b4301
1 program p10137;
3 {$APPTYPE CONSOLE}
5 uses
6 SysUtils, Math;
8 function isInt(d : double) : boolean;
9 begin
10 isInt := (floor(d) = d);
11 end;
13 procedure miStringReplace(var s : string; old : char; nuevo : char);
14 var
15 i : integer;
16 begin
18 for i := 0 to length(s) do
19 begin
20 if s[i] = old then
21 s[i] := nuevo;
22 end;
24 end;
26 procedure printFloat(d : double);
27 var
28 ReplaceFlags : TReplaceFlags;
29 s : String;
30 begin
31 s := format('$%f', [d]);
32 miStringReplace(s, ',', '.');
33 writeln(s);
34 //writeln(StringReplace(format('$%f', [d]), ',', '.'));
35 //writeln(StringReplace(format('$%f', [d]), ',', '.' ReplaceFlags));
36 //writeln(StringReplace(formatFloat('$#0.00', d), ',', '.', ReplaceFlags));
37 end;
39 var
40 s : Array[0..1001] of double;
41 n, i : integer;
42 promedio, mas, menos : double;
43 redondee : boolean;
44 ReplaceFlags : TReplaceFlags;
46 begin
47 //reset(input, 'inside.txt');
48 //reset(output, 'outside.txt');
49 read(n);
50 while n <> 0 do
51 begin
52 promedio := 0;
53 mas := 0;
54 menos := 0;
55 for i:=0 to n-1 do
56 begin
57 read(s[i]);
58 promedio := promedio + s[i];
59 end;
60 promedio := promedio / n;
61 if (isInt(promedio * 100)) then
62 redondee := false
63 else
64 begin
65 redondee := true;
66 promedio := floor(promedio * 100) / 100;
67 end;
68 //printFloat(promedio); writeLn('(Redondeado hacia abajo)');
69 for i:=0 to n-1 do
70 begin
71 if s[i] < promedio then
72 menos := menos + abs(s[i] - promedio)
73 else
74 if s[i] > promedio then
75 begin
76 if redondee then
77 mas := mas + abs(s[i] - (promedio + 0.01))
78 else
79 mas := mas + abs(s[i] - promedio);
80 end;
81 end;
82 if mas > menos then
83 printFloat(mas)
84 else
85 printFloat(menos);
86 read(n);
87 end;
88 end.